/*
 * Parser.h
 *
 *  Created on: 02/06/2013
 *      Author: lucio
 */

#ifndef PARSER_H_
#define PARSER_H_
#include <string>
#include <fstream>
#include <list>
#include <iostream>
#include <cstring>
#include <map>
#include <sstream>
#include "RegistroTermino.h"
#include "ArchivoAuxMerge.h"

using namespace std;
#define ROOT "/home/lucio/workspace/TpDatos/Debug"
// XXX: modificar path dependiendo de la maquina

class Parser {
	fstream archivoPaths;
	fstream indicePaths;
	int idDocumento;
	string raiz;
	list<ArchivoAuxMerge*>* listaDeArchivoAuxMerge;

	void guardarPath(string path);
	list<string>* tokenizar(string path);
	void quitarAcentosYDieresis(string &token);
	void pasarAMinuscula(string &token);
	void quitarSignosDePuntuacion(string &token);
	list<RegistroTermino*>* generarTerminosYPosiciones(list<string>* tokens);
	void generarAuxiliar(list<RegistroTermino*>* terminos);
	string convertirIntAString(int entero);
	void rellenarConCeros(string &cadena);
	void guardarArchivoAuxMerge(string nombreArchivoAuxiliar, int cantidadDeRegistros);

public:
	Parser(string root);
	void parsear(string path);
	list<ArchivoAuxMerge*>* obtenerArchivoAuxMerge();
	virtual ~Parser();

private:
	void insertTermino(list<RegistroTermino*>* terminos, RegistroTermino *termino);
};

#endif /* PARSER_H_ */
